import math
import scipy.integrate as integrate
import matplotlib.pyplot as plt
import libraries.filereader as filereader
import scipy


def calculateRadiation(temperature, density):
    constant_formula = 1.9 * 10 ** -28  # константа перед интегралом
    gaunt_factor = 2
    omega = math.pi * (3.1 ** 2) / 60 ** 2  # телесный угол

    radiusA = 24  # малый радиус такомака глобус
    distanceFromDiagnosticsToTokomak = 73  # раастояние от диагностики до токамака

    # объём
    # радиус окружности на столбе токамака, куда смотрит диагностика
    volume = omega / 3 * (
            (radiusA + radiusA + distanceFromDiagnosticsToTokomak) ** 3 - distanceFromDiagnosticsToTokomak ** 3)

    # граници интегрирования по лямда
    lambda1 = 0.9
    lambdaMax = 6200 / temperature(0)

    # densityFile = open('24032706-density' + str(t) + '.txt', 'w')
    # temperatureFile = open('24032706-temperature' + str(t) + '.txt', 'w')

    smallRadiusArray = list(range(0, radiusA))

    densityArray = list(map(density, smallRadiusArray))
    plt.subplot(121)
    plt.grid(True)
    plt.plot(smallRadiusArray, densityArray)

    temperatureArray = list(map(temperature, smallRadiusArray))
    plt.subplot(122)
    plt.grid(True)
    plt.plot(smallRadiusArray, temperatureArray)

    plt.savefig('profiles_chart.png')
    plt.show()

    # for i in range(len(smallRadiusArray)):
    #     densityFile.write(str(smallRadiusArray[i]) + ' ' + str(densityArray[i]) + '\n')
    #     temperatureFile.write(str(smallRadiusArray[i]) + ' ' + str(temperatureArray[i]) + '\n')

    f = lambda R, L: (
            constant_formula * gaunt_factor * omega * volume * density(R) ** 2 / (math.sqrt(temperature(R)) * L ** 2) *
            math.exp(-12395 / (L * temperature(R)))
    )
    result = integrate.dblquad(f, lambda1, lambdaMax, -1 * radiusA, radiusA)
    print(result)
    return result[0]
